package com.zhuty.aiBioHelper.service;

import com.zhuty.aiBioHelper.ai.guardrail.SafeInputGuardrail;
import com.zhuty.aiBioHelper.enums.AiRoleType;
import dev.langchain4j.service.*;
import dev.langchain4j.service.guardrail.InputGuardrails;
import reactor.core.publisher.Flux;

import java.util.List;

/**
 * LiveRamp数据协作专家AI服务接口
 * 专门处理数据协作平台、企业身份识别、营销技术等领域问题
 * 
 * @author zhuty
 */
@InputGuardrails({SafeInputGuardrail.class})
public interface LiveRampDataService extends BaseAiService {
    
    @Override
    default AiRoleType getSupportedRoleType() {
        return AiRoleType.LIVERAMP_DATA_EXPERT;
    }
    
    /**
     * 基础数据协作咨询
     */
    @SystemMessage(fromResource = "system-prompt-liveramp.txt")
    @Override
    String chat(String userMessage);
    
    /**
     * 生成数据协作解决方案报告
     * 
     * @param userMessage 用户输入的业务需求
     * @return 结构化的数据协作解决方案报告
     */
    @SystemMessage(fromResource = "system-prompt-liveramp.txt")
    DataCollaborationReport generateSolutionReport(String userMessage);
    
    /**
     * 带RAG检索增强的数据协作咨询
     */
    @SystemMessage(fromResource = "system-prompt-liveramp.txt")
    @Override
    Result<String> chatWithRag(String userMessage);
    
    /**
     * 流式数据协作咨询
     */
    @Override
    Flux<String> chatStream(@MemoryId int memoryId, @UserMessage String userMessage);
    
    /**
     * 分析客户数据成熟度
     * 
     * @param companyProfile 公司概况
     * @return 数据成熟度分析报告
     */
    @SystemMessage(fromResource = "system-prompt-liveramp.txt")
    DataMaturityAnalysis analyzeDataMaturity(String companyProfile);
    
    /**
     * 数据协作解决方案报告数据结构
     * 
     * @param clientName 客户名称
     * @param businessChallenges 业务挑战
     * @param recommendedSolutions 推荐解决方案
     * @param technicalArchitecture 技术架构建议
     * @param implementationPlan 实施计划
     * @param expectedOutcomes 预期成果
     */
    record DataCollaborationReport(
        String clientName,
        List<String> businessChallenges,
        List<String> recommendedSolutions,
        String technicalArchitecture,
        List<String> implementationPlan,
        List<String> expectedOutcomes
    ) {}
    
    /**
     * 数据成熟度分析报告数据结构
     * 
     * @param companyName 公司名称
     * @param currentMaturityLevel 当前成熟度等级
     * @param strengthAreas 优势领域
     * @param improvementAreas 改进领域
     * @param recommendedActions 推荐行动
     * @param timelineEstimate 时间线估计
     */
    record DataMaturityAnalysis(
        String companyName,
        String currentMaturityLevel,
        List<String> strengthAreas,
        List<String> improvementAreas,
        List<String> recommendedActions,
        String timelineEstimate
    ) {}
}